課程資訊
課程名稱
系統程式設計
Systems Programming 
開課學期
102-1 
授課對象
資訊工程學系  
授課教師
施吉昇 
課號
CSIE2210 
課程識別碼
902 25900 
班次
01 
學分
全/半年
半年 
必/選修
必帶 
上課時間
星期三2,3,4(9:10~12:10) 
上課地點
資101 
備註
限學士班二年級以上 且 限本系所學生(含輔系、雙修生) 且 限學號單號
總人數上限:80人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1021sp01 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

隨著電腦系統的快速演進,若程式設計師無法有效利用電腦在軟體方面所提供的服務與硬體方面所提供的資源,再強大的電腦系統也無法充份發揮其功能。基礎的程式語言(programming language)課程主要是教導學生熟悉一程式語言,並且有能力實作資料結構與演算法則以解決問題。然而,為有效使用系統資源,除了基本的程式設計能力外,學生必須了解電腦作業系統(operating system)如何運作,作業系統提供哪些服務以協助程式使用系統資源,學生亦需有能力檢視程式的正確性、安全性與分析所寫的程式是否可能造成系統資源的浪費。
本課程內容旨在介紹電腦在系統層次的主要概念,學生將學習如何在UNIX相關作業系統上利用各種系統服務開發應用程式。由於UNIX相關作業系統同時支援多個使用者、多個行程(process)及多個中央處理器(CPU),使用此類系統資源時,程式必須考慮檔案存取權限的問題、資料保密與系統安全的問題、不同行程間的通訊問題、多個行程同時執行的同步(synchronization)問題、處理各種事件產生的訊號(signal)問題等,這些問題皆與電腦作業系統習習相關。本課程首先介紹UNIX相關作業系統的主要概念,讓修課同學了解此類系統所提供的運算能力與執行環境,建立UNIX作業系統相關概念的理論基礎,進而學習應用各種系統服務的技巧,以培養其將來從事與系統層次相關之程式開發能力。 

課程目標
本課程的目標在於讓修課同學:
.熟悉UNIX相關作業系統的操作環境。
.理解UNIX相關作業系統之系統架構與系統服務。
.學習UNIX系統服務之應用程式介面(API)的相關標準。
.有能力在UNIX相關作業系統上,以C程式語言開發程式。
.有能力撰寫一產生多行程的程式,並處理多行程間的通訊與同步。
.有能力分析程式的正確性、安全性與執行效能。 
課程要求
預修課程:資料結構,C/C++ 程式設計 
預期每週課後學習時數
 
Office Hours
每週二 16:00~18:00
每週三 16:00~18:00 備註: 可另外約定面談時間 
指定閱讀
 
參考書目
Advanced Programming in the Unix Environment” by W. Richard Stevens and Stephen A. Rago,
Addison-Wesley, 2013. It is distributed by 開發圖書有限公司.  
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
期中考 
30% 
課堂考試 
2. 
期末考 
30% 
課堂考試 
3. 
程式作業 
40% 
五次作業 
 
課程進度
週次
日期
單元主題
第1週
9/11  課程大綱,程式範例、Unix 系統介紹。 
第2週
9/18  File I/O (Part I, Ch. 3) 
第3週
9/25  File I/O (Part II, Ch. 3) 
第4週
10/2  I/O Multiplexing, asynchronous IO, file lock and standard IO 
第5週
10/9  Standard IO (Part II) 
第6週
10/16  Files and Directories 
第7週
10/23  System Data Files and Information 
第8週
10/30  Process environment and Process Control (Part I) 
第9週
11/6  Midterm 
第10週
11/13  IO Multiplex and Process Control (Part II) 
第11週
11/20  Thread 
第12週
11/27  Thread Control 
第13週
12/4  Signals (Part I) 
第14週
12/11  Signals (Part II)  
第15週
12/18  Inter-Process Communication 
第16週
12/25  Daemon Process/Advanced IPC 
第17週
1/1  (No Class) 
第18週
1/8  Final Exam